Сейчас нас будет интересовать кнопка Ввод/Просмотр других сведений. По нажатию, на эту кнопку в Access меняются кнопки.

По нажатию на кнопку Авторы отроется таблица Авторы. То есть эти кнопки дают нам возможность работать с таблицами, добавлять, удалять и так далее. Но интересно то, что кнопки просто пропадают и появляются новые. Именно этим мы и займемся, то есть реализаций такой возможности в данном шаге. Итак, по нажатию на кнопку Ввод/Просмотр других сведений с диалогового окна должны пропадать кнопки. Создаем функцию ShowButton.
void CBiblioDlg::ShowButton(int iStart, int iFinish, int iShow)
{
}
В параметрах - начало идентификаторов и конец идентификаторов, тип отображения. Почему начало и конец. Давайте посмотрим наш файл с ресурсами Resource.h:
// Group 1> #define IDC_STATIC_QUIT 1000 #define IDC_BUTTON_BOOK 1001 #define IDC_BUTTON_CITAT 1002 #define IDC_BUTTON_OTHER 1003 #define IDC_BUTTON_REPORT 1004 #define IDC_BUTTON_EDIT 1005 #define IDC_STATIC_BOOK 1006 #define IDC_STATIC_CITAT 1007 #define IDC_STATIC_OTHER 1008 #define IDC_STATIC_REPORT 1009 #define IDC_STATIC_EDITS 1010 // End Group 1
Они идут подряд. Естественно нумерация зависит от того, в какой последовательности производилась вставка, но мы можем и сами перенумеровать при необходимости, просто отредактировав Resource.h. Пишем функцию:
void CBiblioDlg::ShowButton(int iStart, int iFinish, int iShow)
{
for (int x=iStart;x<=iFinish;x++)
{
CWnd *cw=GetDlgItem(x); // получить окно по идентификатору
cw->ShowWindow(iShow); // спрятать элемент управления
}
}
Вот теперь и напишем реакцию на нажатие кнопки ввод просмотр других сведений.
void CBiblioDlg::OnButtonOther()
{
ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_HIDE);
ShowButton(IDOK,IDOK,SW_HIDE);
}
void CBiblioDlg::OnStaticOther()
{
OnButtonOther();
}
Нажимая на кнопку все должно пропадать. Но у нас должны появляться другие кнопки. Их нужно поместить на диалоговую панель, только пока установить Visible в FALSE и при запуске диалога их будет не видно.

Тут же сделаем события реакции.
void CBiblioDlg::OnButtonAuthorform()
{
// TODO: Add your control notification handler code here
}
void CBiblioDlg::OnButtonContens()
{
// TODO: Add your control notification handler code here
}
void CBiblioDlg::OnButtonExitother()
{
// TODO: Add your control notification handler code here
}
Разместим статические надписи.

Естественно к этим элементам нужна реакция на щелчок которая будет аналогична нажатию на кнопки.
void CBiblioDlg::OnStaticExitform()
{
OnButtonExitother();
}
void CBiblioDlg::OnStaticContectForm()
{
OnButtonContens();
}
void CBiblioDlg::OnStaticAuthorform()
{
OnButtonAuthorform();
}
Теперь по нажатию, но кнопку нужно не только прятать элементы но и показывать невидимые. Вот они в ресурсах.
#define IDC_BUTTON_AUTHORFORM 1012 #define IDC_BUTTON_CONTENS 1013 #define IDC_BUTTON_EXITOTHER 1014 #define IDC_STATIC_AUTHORFORM 1015 #define IDC_STATIC_CONTECT_FORM 1016 #define IDC_STATIC_EXITFORM 1017
А вот новые код.
void CBiblioDlg::OnButtonOther()
{
ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_HIDE);
ShowButton(IDOK,IDOK,SW_HIDE);
ShowButton(IDC_BUTTON_AUTHORFORM,IDC_STATIC_EXITFORM,SW_SHOW);
}
А по нажатию на кнопку выхода в главную форму все наоборот.
void CBiblioDlg::OnButtonExitother()
{
ShowButton(IDC_STATIC_QUIT,IDC_STATIC_EDITS,SW_SHOW);
ShowButton(IDOK,IDOK,SW_SHOW);
ShowButton(IDC_BUTTON_AUTHORFORM,IDC_STATIC_EXITFORM,SW_HIDE);
}
Вот так это будет работать.
